Complex systems typically include a plurality of embedded or other component systems. For example, an electric vertical (or short) takeoff and landing (VTOL) aircraft may use a plurality of lift fans (rotors) driven by electric motors to provide vertical lift, e.g., to lift the aircraft into the air for takeoff, to hover while in flight, and/or to provide vertical lift as the aircraft lands. One or more additional electrically-driven propellers may be provided for forward flight. Additional actuators, such as ailerons and other control surfaces, may be included. Each actuator (lift fan, forward propulsion propeller, control surface, etc.) may have an associated controller configured to provide low level commands to control actuator parameters, such as RPM in the case of lift fans or propellers. Each controller may be configured to be responsive to commands received from a central flight control computer, and may further be configured to communicate actuator state and/or other information to the flight control computer. Additional systems may exist to manage batteries that power actuator motors and servos, provide power to electronic systems; receive and route sensor data; and interpret and communicate inputs provided via manual aircraft controls (inceptors) and/or autopilot computers.
Typically, flight code is developed for an aircraft via a manually intensive process, to ensure data flows between embedded systems in a deterministic, unambiguous manner and quickly enough to enable the embedded systems to be controlled to fly the aircraft in a safe and optimal manner. However, such manual processes may be error prone and can extend the development timeline for a new or improved aircraft.